Dedicated debugging interfaces are widely used to log status and error messages from a running computerized system. Unfortunately, these interfaces often require specialized hardware that is expensive and difficult to use. Sometimes the debugging interface, such as the Joint Test Action Group (JTAG) interface, for example, may require its own dedicated hardware bus which has to be physically exposed outside of the system being tested or debugged. This is frequently awkward and, especially on production systems, these specialized interfaces may not be made accessible because of cost, mechanical, or security considerations.
One common solution to this problem is to log messages using another general-purpose communications bus or storage mechanism that exists on the system under test. For example, messages may be logged to a general-purpose bus (e.g., a serial port) or to a file stored on a hard disk drive. One disadvantage of this, however, is that the debugging messages may interfere with the normal purpose of the bus or storage device, especially if those mechanisms are also under test. For example, storing the debug messages in a file on a storage device might change the behavior of the native file system, by filling up storage space or by adding directory and file entries. If the file system is the module which is being tested, this might then interfere with reproduction of defects or change performance metrics. It might also be difficult to access the logged messages while the bus or storage device is under test. Instead, the messages may have to be read out after testing has been completed, thus losing any real-time logging capability.
Accordingly, what is needed is a less invasive and more real-time mechanism for exporting debugging messages on computerized systems that maintain externally accessible file system structures.